package com.leyou.order.controller;

import com.leyou.order.service.PayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 支付控制器
 */
@RestController  // @RestController包含@ResponseBody
public class PayController {
    @Autowired
    private PayService payService;

    /**
     * 获取支付二维码链接
     */
    @GetMapping("/order/url/{id}")
    public ResponseEntity<String> getPayUrl(@PathVariable("id") Long id){
        String payUrl = payService.getPayUrl(id);
        return ResponseEntity.ok(payUrl);
    }

    /**
     * @ResponseBody的功能
     *    1）没有导入jackson包的情况下， 直接可以以普通字符串格式返回响应体内容
     *    2）@ResponseBody + jackson包  ：  导入jackson包的情况下，把返回值（对象）先转换为json字符串再返回
     *    3）@ResponseBody + XML包： 导入xml包的情况下，把返回值（对象）先转换为xml字符串再返回
     *    3）@ResponseBody + jackson包 + XML包： 默认优先转换json字符串，如果配置了produces属性，就以produces属性为主
     */

    /**
     * 支付回调方法
     */
    @PostMapping(value = "/wx/notify",produces = "application/xml" )
    public Map<String,String> wxNotify(@RequestBody Map<String,String> paramMap){
        payService.wxNotify(paramMap);
        Map<String,String> resultMap = new HashMap<>();
        resultMap.put("return_code","SUCCESS");
        resultMap.put("return_msg","OK");
        return resultMap;
    }

    /**
     * 查询订单状态,id:订单的编号
     */
    @GetMapping("/order/state/{id}")
    public ResponseEntity<Integer> checkState(@PathVariable("id") Long id){
        Integer state = payService.checkState(id);
        return ResponseEntity.ok(state);
    }

}
